#ifndef _GL_TEXTURE_H
#define _GL_TEXTURE_H

#ifdef _WIN32
#include <windows.h>
#endif

#include <string>

#include "GLee.h"
#include <GL/glu.h>

class GLTexture
{
public:
    GLTexture(void);
    GLTexture(const std::string filename, const GLint magFilterMode,
        const GLint minFilterMode, const GLint textureComponents,
        const GLenum textureFormat, const GLenum dataType, const bool mipmaps);
    ~GLTexture(void);

    bool initialize(void);

    std::string filename(void) const { return m_filename; }
    GLuint textureID(void) const { return m_textureID; }
    unsigned int width(void) const { return m_width; }
    unsigned int height(void) const { return m_height; }
    GLint magFilterMode(void) const { return m_magFilterMode; }
    GLint minFilterMode(void) const { return m_minFilterMode; }
    GLint textureComponents(void) const { return m_textureComponents; }
    GLenum textureFormat(void) const { return m_textureFormat; }
    GLenum dataType(void) const { return m_dataType; }
    bool mipmaps(void) const { return m_mipmaps; }

private:
    std::string m_filename;
    GLuint m_textureID;
    unsigned int m_width;
    unsigned int m_height;
    GLint m_magFilterMode;
    GLint m_minFilterMode;
    GLint m_textureComponents;
    GLenum m_textureFormat;
    GLenum m_dataType;
    bool m_mipmaps;

};

#endif